From 245be33189fdba26997fc565742ce7a0e78232aa Mon Sep 17 00:00:00 2001 From: Jonas Bernoulli Date: Thu, 4 Aug 2022 14:05:11 +0200 Subject: [PATCH] Fix vertical off-by-one error When the usage information is displayed at the top or bottom (as controlled by `which-key-show-prefix'), then we already accounted for that by putting (- max-height 1) bindings in each row. But we did not ensure that the max-height is used when displaying the result. Instead we used (- max-height 1) here too. When trying to display usage information at the bottom, the result is that it is not displayed because it is off-window. When displaying at the top, then it is displayed, but the last binding is off-window and never displayed. This bug did not matter (much) when using the default settings because then the code used for displaying the window actually ignores the max-height and just uses the height appropriate to display all lines in the buffer (i.e., (+ max-height 1)). However, other display methods, including but not necessarily limited to third-party methods (such as `which-key-posframe') may choose to, or absolutely have to, respect max-height. In particular, anything that tries to use the full height of a frame or window, will be affected by this. --- which-key.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/which-key.el b/which-key.el index 9d5e403f6d8..ba446a56737 100644 --- a/which-key.el +++ b/which-key.el @@ -1989,6 +1989,9 @@ is the width of the live window." (or prefix-title (which-key--maybe-get-prefix-title (key-description prefix-keys)))) + (when prefix-top-bottom + ;; Add back the line earlier reserved for the page information. + (setf (which-key--pages-height result) max-lines)) (when (and (= (which-key--pages-num-pages result) 1) (> which-key-min-display-lines (which-key--pages-height result))) -- 2.30.2